# Проект Службы Поддержки EcoScooter
## Введение

Это комплексная система поддержки для компании EcoScooter, включающая в себя backend API, frontend интерфейс и Telegram-бот для обработки запросов пользователей и ответов на них. Система предназначена для эффективного управления заявками в службу поддержки, предоставляя функции управления сотрудниками и детальной статистики.

## Видео

Для получения общего представления о проекте, посмотрите видео на YouTube:

[![Watch the video](https://img.youtube.com/vi/mjdhHcGvpso/maxresdefault.jpg)](https://www.youtube.com/watch?v=mjdhHcGvpso)

## Архитектура Проекта

Проект состоит из следующих компонентов:

- **Backend**: Обрабатывает основную функциональность, включая аутентификацию пользователей, управление заявками и статистику. Построен с использованием FastAPI.
- **Frontend**: Предоставляет интуитивно понятный веб-интерфейс для управления заявками и сотрудниками, построен с использованием Flask.
- **Telegram Бот**: Обеспечивает взаимодействие с пользователями через Telegram, построен с использованием библиотеки `aiogram` на Python.

## Структура Директории

```
project-root/
├── backend/
│   ├── __init__.py
│   ├── add_user.py
│   ├── app.py
│   ├── database.db
│   ├── models.py
│   ├── schemas.py
│   ├── send_response.py
├── flask_session/
├── frontend/
│   ├── static/
│   ├── templates/
│   │   ├── admin_panel.html
│   │   ├── appeal_details.html
│   │   ├── index.html
│   │   ├── login.html
│   │   ├── manage_employees.html
│   │   ├── statistics.html
│   ├── __init__.py
│   ├── app.py
│   ├── wsgi.py
├── instance/
├── tg/
│   ├── __init__.py
│   ├── bot.py
│   ├── delivery_bot.py
├── database.db
├── README.md
├── requirements.txt
```

## Начало Работы

### Запуск с использованием Docker

1. Убедитесь, что Docker установлен и запущен на вашем компьютере.
2. Соберите образы Docker:

   ```sh
   docker-compose build
   ```

3. Запустите сервисы:

   ```sh
   docker-compose up
   ```

Приложение будет доступно по адресу `http://localhost:8080`, а так же в боте `https://t.me/scooter_support_bot` и `https://t.me/EcoScooterCurierBot`.

### Запуск Локально для Разработки

Чтобы запустить проект локально, убедитесь, что у вас установлен Python, и выполните следующие шаги:

1. **Установите зависимости**:

   ```sh
   pip install -r requirements.txt
   ```

2. **Запустите Backend**:

   ```sh
   uvicorn backend.app:app --reload
   ```

3. **Запустите Frontend**:

   ```sh
   python frontend/app.py
   ```

4. **Запустите Telegram Ботов**:

   ```sh
   python tg/support_bot.py
   python tg/delivery_bot.py
   ```

## Основные Функции

- **Аутентификация Пользователей**: Безопасный вход и контроль доступа с использованием OAuth2.
- **Управление Заявками**: Создание, чтение, обновление и удаление заявок в службу поддержки.
- **Управление Сотрудниками**: Добавление, редактирование и удаление записей о сотрудниках.
- **Статистика**: Просмотр детальной статистики по заявкам и использованию системы.
- **Адаптивный Дизайн**: Интуитивно понятный и удобный интерфейс для управления операциями поддержки.

## Использование

- **Frontend**: Получите доступ к веб-интерфейсу по адресу `http://localhost:8080`. Используйте учетные данные, предоставленные при создании сотрудников, чтобы получить доступ к различным разделам в зависимости от уровня доступа.
- **Backend**: Получите доступ к веб-интерфейсу API по адресу `http://localhost:8000/docs`. Так вы получите четкое объяснению и типизацию ко всем возможным обращениям к серверу.
- **Telegram Бот Поддержка**: Взаимодействуйте с системой поддержки через Telegram для мгновенных ответов и обновлений по заявкам.
- **Telegram Бот Курьер**: Взаимодействуйте с системой отслеживания курьеров через Telegram.

## Лицензия

Этот проект лицензирован по лицензии MIT.

---

## Краткое описание проекта

Данный проект представляет из себя сайт и два Telegram-бота. На сайте есть утилиты для поддержки оператора, в котором он может общаться с клиентом, добавить им промокод, сообщить о проблеме, закрыть общение и перевести обращение на другого оператора.

## Поддержка оператора

Проект предоставляет инструменты для операторов службы поддержки, которые могут:

- Общаться с клиентами в формате чата.
- Добавлять промокоды для клиентов.
- Сообщать о проблемах.
- Закрывать обращения.
- Переводить обращения на других операторов.

Для этого предусмотрен удобный веб-интерфейс, где операторы могут эффективно управлять заявками и взаимодействовать с клиентами.
### Сторона клиента
Это Telegram-бот, который выполняет функции подачи заявок и получения ответов. Когда сотрудник закрывает чат, и в течение 10 минут на него не поступает ответ, заявка считается закрытой.

### Софт для склада
Возможен поиск по ID самоката и изменение информации о нем.

### Статистика по обращениям в поддержку
Тут представлены графики:
- Количество онлайн сотрудников
- Количество обращений принято сегодня
- Количество обращений в обработке
- Количество закрытых обращений
- Временные графики со средним временем первого ответа и закрытия вопроса и многие другие

### Софт для управления курьерами
Можно посмотреть статусы курьеров на данный момент: они в работе, не начали рабочий день, закончили рабочий день. Также можно установить расписание, которое распределяет между всеми равномерно нагрузку на указанные дни.

### Административная панель
Возможность управлять текущими сотрудниками, добавлять новых. Введена система управления доступами, чтобы человек, не обладающий определенными правами, не мог обращаться к недоступным ему частям сайта и методам. Реализовано на FastAPI и Flask с уровнями доступа OAuth2.

### Telegram-бот для курьеров
Курьеры могут отмечаться при начале рабочего дня, сообщать о поломках, заканчивать рабочий день. Эти данные уходят в единую базу данных.